package xx.services.management.inter;

import javax.ws.rs.FormParam;
import javax.ws.rs.PathParam;
import javax.ws.rs.QueryParam;

/**
 * 后台管理分类服务接口
 * 
 * @Path (Constants.RESTFUL_ROOT_PATH + "/management/category")
 * @author chenx
 */
public interface ICategoryInterface
{
    /**
     * 获取第一级分组,当categoryId为0时，获取根分级
     * 
     * @GET
     * @Path ("/{category_id}/children")
     * @param categoryId-@PathParam("category_id")
     *            分类ID
     * @param jsonkeys-@QueryParam("jsonkeys")
     *            相关JSONkey
     * @return 分类列表
     */
    public String getChildren(@PathParam("category_id")
    long categoryId, @QueryParam("jsonkeys")
    String jsonkeys);

    /**
     * 获取指定分组信息
     * 
     * @GET
     * @Path ("/{category_id}")
     * @param categoryId-@PathParam
     *            ("category_id") 分类ID
     * @return 分类实体
     */
    public String getInfo(@PathParam("category_id")
    long categoryId);

    /**
     * 在分类{category_id}下增加子分组，
     * 
     * @POST
     * @Path("/{category_id}")
     * @param categoryId-@PathParam("category_id")
     *            分组ID
     * @param name-@FormParam("name")
     *            分组名称
     * @param pageId-@FormParam("page_id")
     *            与分组关联的页面ID
     * @param sortId-@FormParam("sort_category_id")
     *            兄弟节点ID（>0时，表示把新增的分组排在categoryId的后台，<0时，表示把新增的分组排在categoryId的前边，=0时，表示排在最后边）
     * @param sign-@FormParam("sign")
     *            分类标识
     * @param description-@FormParam("description")
     *            分类描述
     * @return
     */
    public String add(@PathParam("category_id")
    long categoryId, @FormParam("name")
    String name, @FormParam("page_id")
    long pageId, @FormParam("sort_category_id")
    long sortId, @FormParam("sign")
    int sign, @FormParam("description")
    String description);

    /**
     * 修改分类
     * 
     * @PUT
     * @Path ("/{category_id}")
     * @param categoryId-@PathParam("category_id")
     *            分类ID
     * @param name-@FormParam("name")
     *            分类名称
     * @param pageId-@FormParam("page_id")
     *            关联page页面ID
     * @param description-@FormParam("description")
     *            分类描述
     * @return 新的分类实体
     */
    public String modify(@PathParam("category_id")
    long categoryId, @FormParam("name")
    String name, @FormParam("page_id")
    long pageId, @FormParam("description")
    String description);

    /**
     * 删除分类
     * 
     * @DELETE
     * @Path ("/{category_id}")
     * @param categoryId-@FormParam("category_id")
     *            分类ID
     * @return
     */
    public String delete(@FormParam("category_id")
    long categoryId);
}
